#pragma once

#include "FSMObject.h"

/*!
 * \brief Action executed by states
 *
 * Action executed by states
 */
class CAction : public CFSMObject
{

	DECLARE_RTTI_CLASS( CAction, CFSMObject::GetRTTI( ) );

	//================================== METHODS ==============================
public:
	//! Constructor method
	CAction();

	//! Execute action
	virtual void Execute() = 0;
};

//============================== TYPE DEFINITIONS =========================

//! Action smart pointer
typedef SmartPtr<CAction> CActionPtr;

//! Action smart pointer list
typedef CVector<CActionPtr> TActionList;